cilium系列之一:安装并配置cilium 您所在的位置:网站首页 k8s cilium cidr设置 cilium系列之一:安装并配置cilium

cilium系列之一:安装并配置cilium

2024-07-11 12:46| 来源: 网络整理| 查看: 265

DockOne微信分享(二五四):阿里云如何构建高性能云原生容器网络? 这篇文章挺厉害的,介绍了cilium在service和networkpolicy上的作用 cilium可以在内核转发和过滤数据包,可以解决现有的kube-proxy性能问题

里面介绍到 Kubernetes Service 性能和扩展性问题 默认的 Kubernetes 的 Service 实现 kube-proxy,它是使用了 iptables 去配置 Service IP 和负载均衡: 在这里插入图片描述

如上图所示: 负载均衡过程的 iptables 链路长,导致网络延时显著增加,就算是 IPVS 模式也是绕不开 iptables 的调用; 扩展性差。iptables 规则同步是全量刷的,Service 和 Pod 数量多了,一次规则同步都得接近 1s;Service 和 Pod 数量多了之后,数据链路性能大幅降低。

18.png

NetworkPolicy 性能和扩展性问题

NetworkPolicy 是 Kubernetes 控制 Pod 和 Pod 间是否允许通信的规则。目前主流的 NetworkPolicy 实现基于 iptables 实现,同样有 iptables 的扩展性问题: iptables 线性匹配,性能不高, Scale 能力差 iptables 线性更新,更新速度慢

在这里插入图片描述

性能对比 通过 eBPF 对链路的简化,性能有明显提升,相对 iptables 提升 32%,相对 IPVS 提升 62%; 通过编程的 eBPF 的形式,让 Service 数量增加到 5000 时也几乎没有性能损耗,而 iptables 在 Service 增加到 5000 时性能损失了 61%。

这些图都很直观,cilium的突出之处就是,ebpf能让service维持高性能不衰减,也能避免iptables的链路损失。 这篇文章思路其实很好,就是网络层用ipvlan走underlay,networkpolicy和service转发用cilium走ebpf过滤和转发网络包。

调整时间

yum install -y chrony; timedatectl set-ntp true; timedatectl set-timezone Asia/Shanghai; systemctl restart chronyd;

安装或升级containerd 下载最新版的nerdctl,里面有containerd和runc二进制 nerdctl官方github地址https://github.com/containerd/nerdctl/releases

#下载到/root目录下,nerdctl github地址为https://github.com/containerd/nerdctl/releases tar zxvf nerdctl-full-0.20.0-linux-amd64.tar.gz;

#复制二进制文件、cni文件与systemd文件 \cp -f bin/* /usr/local/bin/;\cp -f lib/systemd/system/* /etc/systemd/system;mkdir -p /opt/cni/bin;\cp -f libexec/cni/* /opt/cni/bin;

#修改buildkitd工作目录与estargz sed -i "s#ExecStart=/usr/local/bin/buildkitd\(.*\)#ExecStart=/usr/local/bin/buildkitd --root /opt/buildkit --containerd-worker-snapshotter=stargz#g" /etc/systemd/system/buildkit.service

#修改stargz-snapshotter工作目录 sed -i "s#ExecStart=\(.*\)#ExecStart=/usr/local/bin/containerd-stargz-grpc --root /opt/containerd-stargz-grpc --log-level=debug --config=/etc/containerd-stargz-grpc/config.toml#g" /etc/systemd/system/stargz-snapshotter.service

#生成默认配置 mkdir /etc/containerd;containerd config default > /etc/containerd/config.toml;

#修改crictl配置文件,获得containerd的sock信息,否则从yum源安装的crictl无法读取镜像或者清理镜像之类的操作 echo 'runtime-endpoint: unix:///run/containerd/containerd.sock' > /etc/crictl.yaml;

#替换snapshotter与使用 systemd cgroup 驱动程序 sed -i -e 's#registry.k8s.io#registry.aliyuncs.com/google_containers#g' -e 's#registry-1.docker.io#3i61yr6w.mirror.aliyuncs.com#g' -e "s#SystemdCgroup\(.*\)#SystemdCgroup\ =\ true#g" /etc/containerd/config.toml

#下面几段来自kubernetes官网https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/#containerd

cat


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有